万卷网> GESP认证 >C++ > 2025年9月CCF—GESP(C++五级)编程能力等级认证试卷

2025年9月CCF—GESP(C++五级)编程能力等级认证试卷
五级 2025 2026-07-14 18:06:34 101

一、单选题

1.

关于 埃氏筛 和 线性筛 的比较,下列说法错误的是( )

A.

埃氏筛可能会对同一个合数进行多次标记

B.

线性筛的理论时间复杂度更优,所以线性筛的速度往往优于埃氏筛

C.

线性筛保证每个合数只被其最小质因子筛到一次

D.

对于常见范围( n=<10^7),埃氏筛因实现简单,常数较小,其速度往往优于线性筛

2.

以下哪种情况使用链表比数组更合适?2025.9-5

A.

数据量固定且读多写少

B.

需要频繁在中间或开头插入、删除元素

C.

需要高效随机访问元素

D.

存储空间必须连续

3.

下述C++代码实现了归并排序算法,则横线上应填写( )

A.

i < mid

B.

j < right

C.

i <= mid

D.

j <= right

4.

函数 sieve 实现埃拉托斯特尼筛法(埃氏筛),横线处应填入( )。

A.

i

B.

i+1

C.

i+2

D.

i*i

5.

给定一个 n x n 的矩阵 matrix ,矩阵的每一行和每一列都按升序排列。函数 countLE 返回矩阵中第k 小的元素,则两处横线上应分别填写( )。

A.

hi = mid - 1;

lo = mid + 1;

B.

hi = mid;

lo = mid;

C.

hi = mid;

lo = mid + 1;

D.

hi = mid + 1;

lo = mid;

6.

唯一分解定理描述的是( )。

A.

每个整数都能表示为任意素数的乘积

B.

每个大于 1 的整数能唯一分解为素数幂乘积(忽略顺序)

C.

合数不能分解为素数乘积

D.

素数只有两个因子:1 和自身

7.

函数 removeElements 删除单链表中所有结点值等于 val 的结点,并返回新的头结点,其中链表头结点为head ,则横线处填写( )

A.

Node* del = cur;

cur = DEL->NEXT;

删除 Del;

B.

Node* del = cur->next;

cur->next = del;

delete del;

C.

Node* del = cur->next;

cur->next = del->next;

delete del;

D.

Node* del = cur->next;

delete del;

cur->next = del->next;

8.

假设你是一家电影院的排片经理,只有一个放映厅。你有一个电影列表 movies ,其中 movies[i] = [start_i, end_i] 表示第 i 部电影的开始和结束时间。请你找出最多能安排多少部不重叠的电影,则横线上应分别填写的代码为( )。

A.

a[0] < b[0] 和 lastEnd

B.

a[1] < b[1] 和 lastEnd

C.

a[0] < b[0] 和 movies[i][0]

D.

a[1] < b[1] 和 movies[i][0]

9.

下述C++代码实现了快速排序算法,下面说法错误的是( )。

A.

. 快速排序之所以叫“快速”,是因为它在平均情况下运行速度较快,常数小、就地排序,实践中通常比归并排序更高效。

B.

在平均情况下,划分的递归层数为 log n,每层中的总循环数为 ,总时间为 O(nlog n)。

C.

在最差情况下,每轮划分操作都将长度为 的数组划分为长度为 0 和 n-1的两个子数组,此时递归层数达到 n,每层中的循环数为 ,总时间为

D.

划分函数 partition 中“从右往左查找”与“从左往右查找”的顺序可以交换

10.

函数 linearSieve 实现线性筛法(欧拉筛),横线处应填入( )

A.

i % p == 0

B.

p % i == 0

C.

i == p

D.

i * p == n

11.

给定一个整数数组 nums ,下面代码找到一个具有最大和的连续子数组,并返回该最大和。则下面说法错误的是( )。

A.

上述代码采用分治算法实现

B.

上述代码采用贪心算法

C.

上述代码时间复杂度为O(n log n)

D.

上述代码采用递归方式实现

12.

函数 isPerfectNumber 判断一个正整数是否为完全数(该数是否即等于它的真因子之和),则横线上应填写( )。一个正整数 n 的真因子包括所有小于 n 的正因子,如28的真因子为1, 2, 4, 7, 14。

A.

i <= n

B.

i*i <= n

C.

i <= n/2

D.

i < n

13.

给定一个由非负整数组成的数组 digits ,表示一个非负整数的各位数字,其中最高位在数组首位,且digits 不含前导0(除非是0本身)。下面代码对该整数执行 +1 操作,并返回结果数组,则横线上应填写( )

A.

digits[i] = 0;

B.

digits[i] = 9;

C.

digits[i] = 1;

D.

digits[i] = 10;

14.

函数 hasCycle 采用Floyd快慢指针法判断一个单链表中是否存在环,链表的头节点为 head ,即用两个指针在链表上前进: slow 每次走 1 步, fast 每次走 2 步,若存在环, fast 终会追上 slow (相遇);若无环,fast 会先到达 nullptr,则横线上应填写( )。

A.

slow = slow->next;

fast = fast->next->next;

B.

slow = fast->next;

fast = slow->next->next;

C.

slow = slow->next;

fast = slow->next->next;

D.

slow = fast->next;

fast = fast->next->next;

15.

以下代码计算两个正整数的最大公约数(GCD),横线上应填写( )

A.

b

B.

a

C.

temp

D.

a * b

二、判断题

1.

链表通过更改指针实现高效的结点插入与删除,但结点访问效率低、占用内存较多,且对缓存利用不友好。

A.正确 B.错误
2.

所有递归算法都可以转换为迭代算法。2025.9-5

A.正确 B.错误
3.

假设函数 gcd() 能正确求两个正整数的最大公约数,则下面的 findMusicalPattern(4,6) 函数返回2。

A.正确 B.错误
4.

二分查找依赖数据的有序性,通过循环逐步缩减一半搜索区间来进行查找,且仅适用于数组或基于数组实现的数据结构。2025.9-5

A.正确 B.错误
5.

下面代码采用分治算法求解标准 3 柱汉诺塔问题,时间复杂度为

A.正确 B.错误
6.

贪心算法总能得到全局最优解

A.正确 B.错误
7.

快速排序和归并排序都是稳定的排序算法。2025.9-5

A.正确 B.错误
8.

下面递归实现的斐波那契数列的时间复杂度为

A.正确 B.错误
9.

基于下面定义的函数,通过判断 isDivisibleBy9(n) == isDigitSumDivisibleBy9(n) 代码可验算如果 一个数能被9整除,则它的各位数字之和能被9整除。

A.正确 B.错误
10.

线性筛关键是“每个合数只会被最小质因子筛到一次”,因此为

A.正确 B.错误

三、编程题

1.

有趣的数字和

2.

数字选取

公众号
客服 反馈
顶部